﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Odense_Kommune.Controller;
using Odense_Kommune.Interfaces;

namespace Odense_Kommune
{
    /// <summary>
    /// Interaction logic for Socialarbejder.xaml
    /// </summary>
    public partial class Socialarbejder : Window
    {
        Systemcontroller controller;

        public Socialarbejder()
        {
            InitializeComponent();
        }

        private void tiSocialarbejder_GotFocus(object sender, RoutedEventArgs e) { UpdateGUIBrugere(); }

        #region Knap Metoder
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            controller = new Systemcontroller();
            UpdateGUIBorger();
        }

        private void btnBorgerOpret_Click(object sender, RoutedEventArgs e)
        {
            BorgerOpret vindue = new BorgerOpret(controller, this);
            vindue.Show();
        }

        private void btnBorgerOpfølg_Click(object sender, RoutedEventArgs e)
        {
            BorgerProfil vindue = new BorgerProfil(controller, this);
            vindue.Show();
        }

        private void btnBorgerRet_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnSocialarbejderOpret_Click(object sender, RoutedEventArgs e)
        {
            BrugerOpret vindue = new BrugerOpret(controller, this);
            vindue.ShowDialog();
        }

        private void btnGemLuk_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Er du sikker på at du vil lukke og gemme?", "Gem og luk", MessageBoxButton.YesNoCancel) == MessageBoxResult.Yes)
                this.Close();
        }
        #endregion

        #region GUI Metoder
        /// <summary>
        /// Opdaterer Bruger Datagridet og gemmer kode-column (column 1)
        /// </summary>
        public void UpdateGUIBrugere()
        {
            dgSocialarbejderSøgning.ItemsSource = null;
            dgSocialarbejderSøgning.ItemsSource = controller.UnderlevCol.Listeafunderleverandør;
            dgSocialarbejderSøgning.Columns[1].Visibility = System.Windows.Visibility.Hidden;
        }

        /// <summary>
        /// Opdaterer Borger Datagridet og gemmer listeafspørgeskeam (column 12)
        /// </summary>
        public void UpdateGUIBorger()
        {
            dgBorgerSøgning.ItemsSource = null;
            dgBorgerSøgning.ItemsSource = controller.BorgerCol.ListeafBorgere;
            dgBorgerSøgning.Columns[12].Visibility = System.Windows.Visibility.Hidden;
        }
        #endregion

        #region Borgersøgning
        /// <summary>
        /// Realtime søgning af borger på kaldenavn - Kan muglivis give problemer, hvis der findes mange borgere.
        /// </summary>
        private void txtKaldeNavn_TextChanged(object sender, TextChangedEventArgs e)
        {
            List<IBorger> tempList = new List<IBorger>();
            foreach (IBorger item in controller.BorgerCol.ListeafBorgere)
            {
                if (item.Kaldenavn.ToString().ToLower().StartsWith(txtKaldeNavn.Text.ToLower()))
                    tempList.Add(item);
            }
            dgBorgerSøgning.ItemsSource = tempList;
        }

        /// <summary>
        /// Realtime søgning af borger på CPR - Kan muglivis give problemer, hvis der findes mange borgere.
        /// </summary>
        private void txtCpr_TextChanged(object sender, TextChangedEventArgs e)
        {

            if (Validering.Cpr(txtCpr.Text))
            {
                List<IBorger> tempList = new List<IBorger>();
                foreach (IBorger item in controller.BorgerCol.ListeafBorgere)
                {
                    if (item.CPR.ToString().ToLower().StartsWith(txtCpr.Text.ToLower()))
                        tempList.Add(item);
                }
                dgBorgerSøgning.ItemsSource = tempList;
            }
            else
            {
                //position for markør
                int cursorPosition = txtCpr.SelectionStart - 1;

                //fjerner uønskede tegn
                txtCpr.Text = Validering.ValiderCpr(txtCpr.Text);

                //fokus på textbox
                txtCpr.Focus();

                //ny position for markør efter fjernelse af uønsket tegn
                txtCpr.Select(cursorPosition, 0);
            }
        }

        private void txtFornavn_TextChanged(object sender, TextChangedEventArgs e)
        {
            List<IBorger> tempList = new List<IBorger>();
            foreach (IBorger item in controller.BorgerCol.ListeafBorgere)
            {
                if (item.Fornavn.ToString().ToLower().StartsWith(txtFornavn.Text.ToLower()))
                    tempList.Add(item);
            }
            dgBorgerSøgning.ItemsSource = tempList;
        }
        #endregion

        #region Brugersøgning
        private void txtNavn_TextChanged(object sender, TextChangedEventArgs e)
        {
            List<IUnderleverandør> tempList = new List<IUnderleverandør>();
            foreach (IUnderleverandør item in controller.UnderlevCol.Listeafunderleverandør)
            {
                if (item.Navn.ToString().ToLower().StartsWith(txtNavn.Text.ToLower()))
                    tempList.Add(item);
            }
            dgSocialarbejderSøgning.ItemsSource = tempList;
        }

        private void txtEmail_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (Validering.Email(txtEmail.Text))
            {
                List<IUnderleverandør> tempList = new List<IUnderleverandør>();
                foreach (IUnderleverandør item in controller.UnderlevCol.Listeafunderleverandør)
                {
                    if (item.Email.ToString().ToLower().StartsWith(txtEmail.Text.ToLower()))
                        tempList.Add(item);
                }
                dgSocialarbejderSøgning.ItemsSource = tempList;
            }
            else
            {
                //position for markør
                int cursorPosition = txtEmail.SelectionStart - 1;

                //fjerner uønskede tegn
                txtEmail.Text = Validering.ValiderEmail(txtEmail.Text);

                //fokus på textbox
                txtEmail.Focus();

                //ny position for markør efter fjernelse af uønsket tegn
                txtEmail.Select(cursorPosition, 0);
            }
        }

        private void txtTelefonNr_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (Validering.Tal(txtTelefonNr.Text))
            {
                List<IUnderleverandør> tempList = new List<IUnderleverandør>();
                foreach (IUnderleverandør item in controller.UnderlevCol.Listeafunderleverandør)
                {
                    if (item.Telefonnr.ToString().ToLower().StartsWith(txtTelefonNr.Text.ToLower()))
                        tempList.Add(item);
                }
                dgSocialarbejderSøgning.ItemsSource = tempList;
            }
            else
            {
                //position for markør
                int cursorPosition = txtTelefonNr.SelectionStart - 1;

                //fjerner uønskede tegn
                txtTelefonNr.Text = Validering.ValiderTal(txtTelefonNr.Text);

                //fokus på textbox
                txtTelefonNr.Focus();

                //ny position for markør efter fjernelse af uønsket tegn
                txtTelefonNr.Select(cursorPosition, 0);
            }
        }

        #endregion

        #region Alternativ søgning
        //    if (txtCpr.Text != "")
        //    {
        //        //List<IBorger> tempListe = controller.BorgerCol.ListeafBorgere.FindAll(p => p.CPR == long.Parse(txtCpr.Text));
        //        //if (tempListe != null)
        //        //{
        //        //    dgBorgerSøgning.ItemsSource = null;
        //        //    dgBorgerSøgning.ItemsSource = tempListe;
        //        //    dgBorgerSøgning.Columns[12].Visibility = System.Windows.Visibility.Hidden;
        //        //}

        //        //else
        //        //{
        //        //    MessageBox.Show("Borgeren med cpr " + txtCpr.Text + " blev ikke fundet!");
        //        //}


        //    }
        //}

        //    else if (txtKaldeNavn.Text != "")
        //    {
        //        List<IBorger> tempListe = controller.BorgerCol.ListeafBorgere.FindAll(p => p.Kaldenavn == txtKaldeNavn.Text);
        //        if (tempListe != null)
        //        {
        //            dgBorgerSøgning.ItemsSource = null;
        //            dgBorgerSøgning.ItemsSource = tempListe;
        //            dgBorgerSøgning.Columns[12].Visibility = System.Windows.Visibility.Hidden;
        //        }

        //        else
        //        {
        //            MessageBox.Show("Borgeren med kaldenavnet " + txtKaldeNavn.Text + " blev ikke fundet!");
        //        }
        //    }

        //    else if (txtFornavn.Text != "" && txtEfternavn.Text != "")
        //    {
        //        List<IBorger> tempListe = controller.BorgerCol.ListeafBorgere.FindAll(p => p.Fornavn == txtFornavn.Text && p.Efternavn == txtEfternavn.Text);
        //        if (tempListe != null)
        //        {
        //            dgBorgerSøgning.ItemsSource = null;
        //            dgBorgerSøgning.ItemsSource = tempListe;
        //            dgBorgerSøgning.Columns[12].Visibility = System.Windows.Visibility.Hidden;
        //        }

        //        else
        //        {
        //            MessageBox.Show("Borgeren med navnet " + txtFornavn.Text + " " + txtEfternavn.Text + " blev ikke fundet!");
        //        }
        //    }
        //} 
        #endregion
    }
}




